cislovanie riadkov

Otázka od: wlado

2. 12. 2002 23:55

Ahoj,
spravil som si jednoduchy textovy editor (RichEdit) a chcel by som, aby sa
mi tam ukazovali cisla riadkov, tak ako to byva napr. v html editoroch. Ako
na to?
Dik

Odpovedá: ing. Jan Fiala

3. 12. 2002 5:46

Budes to muset udelat pomoci nejake komponenty (treba panel, paintbox
apod), kterou umistis vedle RichEditu.
Pak bude treba zjistit, kterym viditelnym radkem ti zacina richedit a
kterym konci, sirku jednotlivych radku (ktera se muze v RichEditu lisit v
zavislosti na velikosti pisma), zjistit, jestli neni radek zalomeny a
vykreslit si tam cisla radku. Aktualizovat to musis pri kazdem skrolu
RichEditu.

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

2.12.2002 wlado:
> Ahoj,
> spravil som si jednoduchy textovy editor (RichEdit) a chcel by som, aby sa
> mi tam ukazovali cisla riadkov, tak ako to byva napr. v html editoroch. Ako
> na to?
> Dik

Odpovedá: Jaroslav Uher

3. 12. 2002 12:57

Ahoj,

On 2 Dec 2002 at 23:39, wlado wrote:

> spravil som si jednoduchy textovy editor (RichEdit) a chcel by som,
> aby sa mi tam ukazovali cisla riadkov, tak ako to byva napr. v html
> editoroch. Ako na to? Dik

podive se do \Delphi\Demos\RichEdit

Jarek Uher

Odpovedá: Peter Ondras

3. 12. 2002 20:23

(* Vytvor novu aplikaciu, vloz na formular richedit a label. Prekopiruj
kompletne cely nasledujuci kod namiesto originalneho kodu vygenerovaneho
z Delphi. Udalosti RichEditu onSelectionChange prirad
RichEdit1SelectionChange. Program ti potom bude ukazovat pohyb priamo
pri pisani, ale aj pri hybani sa v texte.
*)
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Label1: TLabel;
    procedure RichEdit1SelectionChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure GetRTRowCol(RichEdit: TRichEdit; var Row, Col: LongInt);
begin
  with RichEdit do
    begin
      Row:=SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
      Col:=SelStart-SendMessage(Handle, EM_LINEINDEX, Row, 0);
    end;
end;

procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
var RTRow, RTCol: LongInt;
begin
  GetRTRowCol(RichEdit1, RTRow, RTCol);
  Label1.Caption:='Riadok: '+IntToStr(RTRow)+' Stĺpec:
'+IntToStr(RTCol);
end;

end.

Peter Ondras
peter.ondras@pse.sk
(+421) 0904 421 925


>: -----Original Message-----
>: From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]
On
>: Behalf Of wlado
>: Sent: Monday, December 02, 2002 11:39 PM
>: To: delphi-l@clexpert.cz
>: Subject: cislovanie riadkov
>:
>: Ahoj,
>: spravil som si jednoduchy textovy editor (RichEdit) a chcel by som,
aby
>: sa
>: mi tam ukazovali cisla riadkov, tak ako to byva napr. v html
editoroch.
>: Ako
>: na to?
>: Dik

Odpovedá: wlado

3. 12. 2002 22:54

Dik,
ale ja som nemyslel, aby mi to ukazovalo poziciu kurzora, ale aby som mal
vedla kazdeho riadku napisane jeho cislo. Spravne to pochopil ing. Jan
Fiala, ale pretoze som uplny zaciatocnik je to pre mna trochu malo
konkretne - mohli by ste mi to opisat podrobnejsie.



----- Original Message -----
From: "Peter Ondras" <peter.ondras@pse.sk>
To: <delphi-l@clexpert.cz>
Sent: Tuesday, December 03, 2002 7:53 PM
Subject: RE: cislovanie riadkov


(* Vytvor novu aplikaciu, vloz na formular richedit a label. Prekopiruj
kompletne cely nasledujuci kod namiesto originalneho kodu vygenerovaneho
z Delphi. Udalosti RichEditu onSelectionChange prirad
RichEdit1SelectionChange. Program ti potom bude ukazovat pohyb priamo
pri pisani, ale aj pri hybani sa v texte.
*)
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Label1: TLabel;
    procedure RichEdit1SelectionChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure GetRTRowCol(RichEdit: TRichEdit; var Row, Col: LongInt);
begin
  with RichEdit do
    begin
      Row:=SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
      Col:=SelStart-SendMessage(Handle, EM_LINEINDEX, Row, 0);
    end;
end;

procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
var RTRow, RTCol: LongInt;
begin
  GetRTRowCol(RichEdit1, RTRow, RTCol);
  Label1.Caption:='Riadok: '+IntToStr(RTRow)+' Stĺpec:
'+IntToStr(RTCol);
end;

end.

Peter Ondras
peter.ondras@pse.sk
(+421) 0904 421 925


>: -----Original Message-----
>: From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]
On
>: Behalf Of wlado
>: Sent: Monday, December 02, 2002 11:39 PM
>: To: delphi-l@clexpert.cz
>: Subject: cislovanie riadkov
>:
>: Ahoj,
>: spravil som si jednoduchy textovy editor (RichEdit) a chcel by som,
aby
>: sa
>: mi tam ukazovali cisla riadkov, tak ako to byva napr. v html
editoroch.
>: Ako
>: na to?
>: Dik

Odpovedá: ing. Jan Fiala

4. 12. 2002 6:19

3.12.2002 wlado:
> ale ja som nemyslel, aby mi to ukazovalo poziciu kurzora, ale aby som mal
> vedla kazdeho riadku napisane jeho cislo. Spravne to pochopil ing. Jan
> Fiala, ale pretoze som uplny zaciatocnik je to pre mna trochu malo
> konkretne - mohli by ste mi to opisat podrobnejsie.

Pokud ti jde jen o zvyraznovani syntaxe pro HTML a ne o skutecny
RichText edior, jako je Word, pouzij radeji balík komponent SynEdit,
který je na tohle urceny.
Na formular das SynEdit, SynHTMLHighlighter, v SynEditu jej priradis a
syntaxe je zvyraznena.
Krome toho umi i zminovane cislovani radku, sloupcove bloky, zalozky
apod.

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz